/**
 * 模块模板接口
 * 定义模块的标准结构
 */
export interface IBaseModuleTemplate {
  /**
   * 模块 ID
   */
  readonly id: string

  /**
   * 模块名称
   */
  readonly name: string

  /**
   * 支持的域名列表
   */
  readonly supportedPlatforms?: string[]

  /**
   * 模块配置
   */
  readonly config: Record<string, any>

  /**
   * 应用配置
   */
  applyConfig: (config: any) => void

  /**
   * 初始化模块
   */
  init: () => Promise<void> | void

  /**
   * 销毁模块
   */
  destroy: () => Promise<void> | void

  /**
   * 执行模块核心逻辑
   */
  core: () => Promise<void> | void

  /**
   * 切换回调函数
   * @param id 模块 ID
   * @param checked 切换状态
   */
  onToggleCallback: (id: string, checked: boolean, first: boolean) => Promise<void> | void
}
